Git¶
Сегодня мы поговорим о системе контроля версий и одной из самых популярных - Git
Введение в систему контроля версий¶
Система контроля версий - это инструмент, который позволяет нам управлять изменениями в нашем коде или проекте. Ее цель - сохранять историю изменений, облегчать совместную работу и помогать нам отслеживать, что происходит с нашим проектом.
Типы систем контроля версий¶
Существуют два основных типа систем контроля версий: распределенные и централизованные. Распределенные СКВ, такие как Git, позволяют каждому разработчику иметь полную копию репозитория(проекта) на своем компьютере. Централизованные СКВ, например, Subversion или Mercurial, имеют один центральный сервер, на котором хранятся версии проекта.
Основные понятия в Git¶
В Git есть несколько ключевых понятий, с которыми вам нужно быть знакомыми:
Репозиторий: это место, где Git хранит все версии вашего проекта. Репозиторий может быть локальным (на вашем компьютере) или удаленным (на сервере).
Коммиты: это фиксации изменений в проекте. Каждый коммит представляет собой набор изменений, сделанных в коде.
Ветки: они используются для параллельной разработки. Вы можете создавать новые ветки для работы над конкретной функцией или исправлением ошибок.
Слияние: это процесс объединения изменений из одной ветки в другую.
Хэши, деревья и файлы: это способы идентификации изменений и организации файлов в Git.
Установка и настройка Git¶
Вот ссылки на инструкции по установке Git:
- Для Windows: https://git-scm.com/download/win
- Для macOS: https://git-scm.com/download/mac
- Для Linux: https://git-scm.com/download/linux
После установки Git, нам нужно настроить имя пользователя и электронную почту. Это позволит нам идентифицировать наши коммиты. Вы можете использовать следующие команды:
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
Убедитесь, что замените "Your Name" на ваше реальное имя и "your.email@example.com" на вашу реальную электронную почту.
Основные команды Git¶
Теперь, когда у нас установлен и настроен Git, давайте рассмотрим некоторые основные команды, которые помогут нам начать работу:
- git init: создает новый локальный репозиторий в текущем каталоге.
- git clone
<URL>: клонирует удаленный репозиторий на ваш компьютер. - git add
<file>: добавляет файл в индекс, чтобы он был отслеживаемым Git. - git commit -am "Commit message": фиксирует изменения, создавая новый коммит.
- git push: отправляет изменения в удаленный репозиторий.
- git pull: получает и объединяет изменения из удаленного репозитория в ваш локальный репозиторий.
- git branch
<brach-name>: показывает список веток и текущую активную ветку. - git merge
<branch>: объединяет указанную ветку с текущей веткой. - git status: получение актуального состояния репозитория.
Команды git на практике¶
Создание локального репозитория, добавление файла, статус¶
mkdir test_project
cd test_project
git init
echo 'print("Hello world!")' >> test.py
git status
Git в своей работе управляет тремя структурами, которые называются деревьями. Первое — это рабочая директория, в ней хранятся файлы, с которыми вы прямо сейчас работаете. Второе — это Index, который позволяет вам вносить изменения и ничего не портить. А третье — это HEAD, который указывает на последний сделанный вами коммит.
Новые изменения, diff¶
Как вернуться к старому коммиту?¶
- Сделайте изменения в файле 'test.py'
- Зафиксируйте изменения коммитом
git checkout 5b71805c5b2aebf33ecf798ba6bd7e48bfcf39ce
Отменить изменения до индексации¶
git checkout master
git checkout test.py
Отмена проиндексированных изменений¶
git reset HEAD test.py
Отмена коммитов¶
git revert HEAD
Изменения коммитов¶
git commit --amend
Отличия revert от reset¶
Создание новой ветки и переключение между ними¶
git checkout -b feature/name
git branch
git checkout master
git checkout feature/name
GitHub¶
Зарегистрируйтесь на сайте https://github.com .
Создание удаленного репозитория¶
Clone репозитория¶
git clone
Внесение изменений в оригинальный репозиторий¶
git pull
git checkout -b <branch-name>
ваши изменения
git add .
git commit -m “commit message”
git push -u oring <branch-name>
Работа с общим репозиторием¶
Есть права на push:
git clone
…
git push
Нет прав на push:
fork repository
git clone
…
git push
create a pull request
Fork репозитория¶
Создание pull request¶
.gitignore¶
Если у Вас есть файлы, которые вы не только не хотите автоматически добавлять в репозиторий, но и видеть в списках неотслеживаемых. К таким файлам обычно относятся автоматически генерируемые файлы (различные логи, результаты сборки программ и т.п.). В таком случае, вы можете создать файл .gitignore. с перечислением шаблонов соответствующих таким файлам.
*.[oa] - игнорировать файлы заканчивающиеся на *.o или *.a
build/- игнорировать файлы в директории
doc/*.txt- игнорировать файлы *.txt в директории doc
!lib.a - отслеживать файл lib.a
Pip¶
Pip - система управления пакетами, которая используется для установки пакетов Python.
Установка pip:
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py
Ubuntu:
sudo apt install python3-pip
Установка пакетов: pip install XXX
Удаление пакетов: pip uninstall XXX
Обновление: pip install --upgrade XXX или pip install XXX -U
Список установленных пакетов: pip list
Поиск пакетов: pip search XXX
Версия: pip --version/pip3 --version
Requirements.txt¶
$pip freeze > requirements.txt
$pip install -r requirements.txt
Правила по наименованию бранчей и коммитов¶
Практические задания¶
- Создайте директорию: test_project.
- Создайте новый локальный репозиторий.
- Создайте новую ветку с помощью git branch и переключитесь на нее. Внесите изменения и объедините ветку с основной веткой с помощью git merge.
- Отмените последний коммит с использованием git revert. После этого проверьте, что изменения успешно отменены и создан новый коммит.
- Создайте новую ветку с помощью git branch и переключитесь на нее. Внесите изменения в файлы и сделайте несколько коммитов. Затем переключитесь обратно на основную ветку и объедините изменения из новой ветки с помощью git merge.
- Используйте git log для просмотра истории коммитов и их идентификаторов. Попробуйте использовать команды git diff и git show, чтобы просмотреть различия между коммитами.
- Создайте удаленный репозиторий на платформе хостинга GitHub. Свяжите ваш локальный репозиторий с удаленным с помощью команды git remote add origin
. Затем отправьте локальные коммиты в удаленный репозиторий с использованием git push.